#include<iostream>
using namespace std;
//class gobin
//{
//public:
//	gobin(int a = 0)
//		:_a(a)
//	{
//		cout << "gobin():" << this << endl;
//	}
//
//	~gobin()
//	{
//		cout << "~gobin():" << this << endl;
//	}
//
//private:
//	int _a;
//};
//template<class T>
//void swap(gobin& left, gobin& right)
//{
//	gobin temp = left;
//	left = right;
//	right = temp;
//}
//template<class T1,typename T2>
//void swap(T1& left, T2& right)
//{
//    double  temp = left;
//	left = right;
//	right = temp;
//}

//template <class T>
//T* fun1(int n)
//{
//	return new T[n];
//}
//
//
//template<class T>
//  T Add(const T& left, const T& right)
//{
//	return left + right;
//}
//
//  template<class T1,class T2>
//  T2  Add(const T1& left, const T2& right)
//  {
//	  return left + right;
//  }

 // int main()
 // {

	////  	
	////int a = 1;
	////int b = 2;



 ////	double c = 1.1;
	////double d = 1.2222222222;




	//int *p1 = fun1<int>(10);
	//  return 0;
 // }















//int main()
//{
//v
//
//	cout<<Add(a, d)<<endl;
//
//	//cout << Add(a, (int)d) << endl;
//	//cout << Add(a, b) << endl;
//	//cout << Add((double)a, d) << endl;
//	//swap(a, d);
//	//swap(c, d);
//	return 0;
//}


//int main()
//{
//	//gobin* p1 = new gobin(1);
//	//gobin* p2 = (gobin*)operator new(sizeof(gobin));
//	//new(p2)gobin(2);
//
//	//p1 ->~gobin();
//	//operator delete (p1);
//
//	//delete p2;
//	return 0;
//};



template<class T>
T Add(const T& left, const T& right)
{
	return left + right;
}

int Add(const int& x, const int& y)
{
	return (x + y) * 10;
}

int main()
{
	cout << Add(10, 20) << endl;
	return 0;
}